/*
function fooWrap(){
    let name = "lilei"
    function foo(){
        console.log(name)
    }
    return foo
}
let fo = fooWrap()
fo()
*/

function funcWrap(){
    let num = 0
    function foo(){
        num++
        console.log(`这个函数调用了 ${num}次`)
        return num
    }
    return foo
}

let func = funcWrap()
func()
// func()
// func()

// function bar(){
//     let num = 0
//     num++
//     console.log(`这个函数调用了 ${num}次`)
// }
// bar()
// bar()
// bar()
/*
什么叫闭包？
在函数里面定义函数
作用
    把变量的状态封装到函数里面，调用栈会一直保存在内存中，函数里面的变量不会被销毁。
    可以在外边调用和修改函数内部的变量
用途
    防抖和节流
*/